package cn.wolfcode.luowowo.acticle.service;


import cn.wolfcode.luowowo.acticle.domain.Destination;
import cn.wolfcode.luowowo.acticle.query.DestinationQuery;
import cn.wolfcode.luowowo.common.exception.DisplayableException;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * 目的地服务
 */
public interface IDestinationService {
    /**
     * 查询目的地数据(分页)
     * @param qo
     * @return
     */
    PageInfo query(DestinationQuery qo)throws DisplayableException;

    /**
     * 查询目的地数据(分页)
     * @param qo
     * @return
     */
    PageInfo queryDest(DestinationQuery qo)throws DisplayableException;


    /**
     * 添加或更新， 使用id有无区分
     * @param destination
     */
    void saveOrUpdate(Destination destination)throws DisplayableException;

    /**
     * 指定id删除
     * @param id
     */
    void delete(Long id)throws DisplayableException;

    /**
     * 列表页面吐司
     * @param parentId
     * @return
     */
    List<Destination> getToastById(Long parentId)throws DisplayableException;

    /**
     * 设置是否热门
     * @param id
     * @param hot
     */
    void changeHotValue(Long id, boolean hot) throws DisplayableException;

    /**
     * 设置目的地简介
     * @param id
     * @param info
     */
    void setInfo(Long id, String info) throws DisplayableException;

    /**
     * 指定目的地id是否为国外
     * @param id
     * @return  true 表示国外， false表示不是
     */
    boolean isAbroad(Long id);

    /**
     *
     * @param i
     * @return
     */
    List<Map<String, Object>> getDestByDeep(int i);

    /**
     * 查单个
     * @param id
     * @return
     */
    Destination get(Long id);

    /**
     * 获取指定目的地的国家
     * @param id
     * @return
     */
    Destination getCountry(Long id);
    /**
     * 获取指定目的地的省份
     * @param id
     * @return
     */
    Destination getProvince(Long id);

    /**
     * 查询所有
     * @return
     */
    List<Destination> list();

    List<Destination> getDestByRegionId(Long rid);


    List<Destination> getDestByStrDestIds(String[] arrDestIds);
}
